package org.xml.parser.JDOM;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.xml.Book;

public class JDOMTest {
	private static ArrayList<Book> booksList = new ArrayList<Book>();

	public static void main(String[] args) {
		jdomParser();
	}

	public static void jdomParser() {
		// 1.创建一个SAXBuilder对象
		SAXBuilder saxBuilder = new SAXBuilder();

		InputStream in;
		try {
			// 2.创建一个输入流，将xml文件加载到输入流
			in = new FileInputStream("books1.xml");
			// 3.通过SAXBuilder的build方法将输入流加载到SAXBuilder中
			Document document = saxBuilder.build(in);
			// 4.通过Document对象获取xml文件的根节点
			Element rootElement = document.getRootElement();
			// 5.根据根节点获取子节点的List集合
			List<Element> bookList = rootElement.getChildren();
			// 使用循环对bookList进行遍历
//			for (Element book : bookList) {
//				Book bookEntity = new Book();
//				System.out.println("******** 开始解析第"
//						+ (bookList.indexOf(book) + 1) + "本书 ********");
//				// 解析book的属性
//				// 知道节点的属性名的时候获取属性值
//				System.out.println("id属性" + book.getAttributeValue("id"));
//
//				// 不知道属性的个数和属性名的时候
//				List<Attribute> attrList = book.getAttributes();
//				// 遍历book的属性集合
//				for (Attribute attribute : attrList) {
//					System.out.println("属性名：" + attribute.getName() + "-属性值："
//							+ attribute.getValue());
//					if ("id".equals(attribute.getName())) {
//						bookEntity.setId(attribute.getValue());
//					}
//				}
//				// 对book节点的子节点的节点名和节点值进行遍历
//				List<Element> bookChilds = book.getChildren();
//				for (Element child : bookChilds) {
//					System.out.println("节点名：" + child.getName() + "-节点值："
//							+ child.getValue());
//					if ("name".equals(child.getName())) {
//						bookEntity.setName(child.getValue());
//					} else if ("author".equals(child.getName())) {
//						bookEntity.setAuthor((child.getValue()));
//					} else if ("year".equals(child.getName())) {
//						bookEntity.setYear((child.getValue()));
//					} else if ("price".equals(child.getName())) {
//						bookEntity.setPrice(child.getValue());
//					} else if ("language".equals(child.getValue())) {
//						bookEntity.setLanguage(child.getValue());
//					}
//				}
//				System.out.println("******** 结束解析第"
//						+ (bookList.indexOf(book) + 1) + "本书 ********\n");
//				booksList.add(bookEntity);
//			}
//			System.out.println("一共有" + booksList.size() + "本书！");
//			for (Book b : booksList) {
//				System.out.println(b);
//			}
			Element language = new Element("language");
			language.setText("简体中文");
			bookList.get(0).addContent(language);
			Format format = Format.getCompactFormat();
			format.setEncoding("gb2312");//设置编码方式为gb2312
			format.setIndent("	");//设置缩进（此处为一个tab键）
			XMLOutputter outputter = new XMLOutputter(format);
			outputter.output(document, new FileOutputStream("books_append_jdom.xml"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
